home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / prog_gen / gcoope10.zip / README.1ST < prev    next >
Text File  |  1994-07-23  |  10KB  |  206 lines

  1.  
  2.  
  3. GCOOPE Introduction
  4. -------------------
  5.  
  6. WARNING: The software and documentation that are a part of the GCOOPE
  7.      package are hereby entered into the public domain.  Both the
  8.      software and documentation are released without any warranties
  9.      whatsoever, inlcuding the implied warranties of merchantability
  10.      and fitness for use.
  11.  
  12. What is GCOOPE?
  13. ---------------
  14. The GCOOPE system gives Object Oriented Programming capability to 'C'
  15. language programmers using ANSI-C, NOT C++.  These capabilities include
  16. generic (polymorphic/virtual/overloaded) functions, multiple and partial
  17. inheritance, and full compatibility with pre-existing C function libraries.
  18. All without requiring a special pre-processor or other utility programs
  19. beyond linking in the run-time kernel code.
  20.  
  21.  
  22. What does GCOOPE do?
  23. --------------------
  24. GCOOPE allows developers to write object oriented programs in a Smalltalk
  25. like manner without the interpreter penalty.  Programmers can create
  26. class definitions which may inherit and be inherited by other class
  27. definitions.  Similar functions may be referred to by the same generic
  28. name even though they execute different code determined by the object class
  29. that they are defined for.  GCOOPE provides the framework to track and
  30. route instances and methods, while maintaining the capability to be freely
  31. mixed with pre-existing C code.  Another way of describing GCOOPE is as a
  32. dynamic object database manager with a built in generic function dispatcher.
  33.  
  34.  
  35. What are GCOOPE's features?
  36. ---------------------------
  37. * A modular, expandable, kernel written in standard ANSI-C.
  38. * Highly encapsulated class definition modules allow a high degree of
  39.   code reusability without modification or recompilation.
  40. * Generic (virtual) functions in ANSI-C that are easy to use yet are
  41.   highly flexible.  Generic functions and methods may be freely added,
  42.   removed, and even redefined.
  43. * Full meta class system (run-time class representation), new code can
  44.   expand/and or modify a pre-loaded class definition on the fly.
  45. * Flexible inheritance system, the inheritance system supports the
  46.   inheritance of multiple classes, partial inheritance, and inheritance
  47.   with re-definition.
  48. * Optional strong type checking for generic functions allows nearly the
  49.   same degree of static type checking as standard ANSI C.
  50. * Run-time error detection system that is fully expandable and may be
  51.   redefined by object class definitions to allow for error recovery.
  52. * Automatic management of temporary objects in a manner compatible with
  53.   future multi thread extensions.  GCOOPE features an adaptive garbage
  54.   collector system that is process ID aware and operates in the background
  55.   calling the appropriate destructors for temporary objects which are
  56.   no longer used.
  57. * Ease of use, GCOOPE defines a standard kernel interface and provides
  58.   macros to eliminate programming clutter.  Calling a generic function
  59.   looks like: g(GenFuncName)(objectHandle,methodParms);.  Even with the
  60.   strong type checking option the above call is simply:
  61.   G(GenFuncName)(objectHandle,methodParms);.
  62.  
  63.  
  64. What are GCOOPE's main restrictions?
  65. ------------------------------------
  66. Presently, GCOOPE has only been used with Borland Turbo C 2.0 in the large
  67. memory model.  Other compilers and memory models have not been tried.
  68.  
  69. Also, the provided software has not been optimized.  Early experiments
  70. point to an decrease in execution time of 80% or more in the function
  71. dispatcher alone if function calls are eliminated.
  72.  
  73.  
  74. What expansions are planned?
  75. ----------------------------
  76. Multitasking and Dynamic Loading are in the works.  An earlier version of
  77. the package had both capabilities at least in a limited manner, but those
  78. approaches complicated the API beyond belief.  It is probable, at least
  79. with Dynamic Loading, that a pre-processor/utility program will be
  80. required.  This is due to the necessity of adding a symbol system with
  81. referencing and redirecting all external references in a class definition.
  82. Both of these expansions will require input and participation by User's
  83. Group members before they are released.  Also note that any expansions
  84. written solely by this author will be released for free only to User's group
  85. members, other parties will likely be charged a modest fee.  However
  86. all software produced in co-operation with the User's group will be released
  87. as public domain.
  88.  
  89.  
  90. Why is this being released for free?
  91. ------------------------------------
  92. There are several reasons why GCOOPE is being released for free, given
  93. that some of its main competitors cost on the order of $500 plus license fees
  94. and/or royalties.
  95.  
  96. One reason is to get a wider audience using GCOOPE.  Price Technologies
  97. plans on making use of this technology in other products in the future, so
  98. it pays to have this system be thoroughly tried, ported, and extended by a
  99. broad-based user community.
  100.  
  101. It is also hoped that, by releasing this to the public domain, sufficient
  102. interest can be generated as to allow this package to be extended in a team
  103. fashion.  Price Technologies is a one man shop with extremely limited
  104. resources, so the future development of GCOOPE, while led and organized by
  105. Price Technologies, will require the assistance of the GCOOPE user community.
  106.  
  107. It is also hoped that the GCOOPE user community can work together to create
  108. standard APIs for likely expansion class libraries and kernel modules:
  109.     *   GUI support (MS-Windows, X-Windows, Motif, etc.)
  110.     *   Pre-emptive multiTasking (MS-DOS, Unix, Mac, Atari ST, etc.)
  111.     *   Dynamic Object Class Linking and Loading
  112.  
  113. Price Technologies is more than willing to help coordinate debate on APIs
  114. for these and any other proposed GCOOPE standards, as well as to distribute
  115. GCOOPE code written to these APIs (or any other freely distributable modules)
  116. as a part of the overall GCOOPE package.  Limitations will have to be made in
  117. terms of the legality of such packaging (e.g., Price Technologies will not
  118. include cryptographic engines in GCOOPE distributions due to potential
  119. export restrictions and subsequent problems with the US government).
  120.     However, due to financial limitations, technical support and direct
  121. mailings will be limited to the members of the GCOOPE User's GROUP.  The
  122. annual membership fee is $20.00, full details are included in the appendix
  123. to the User's Guide.
  124.  
  125. The final reason is simply that GCOOPE is not, as yet, commercial quality
  126. software.  While Price Technologies could invest the time and money to get
  127. it to that level, with an eye toward a shareware/commercial release and the
  128. resulting profits, that is not the mission.  It makes more sense to release
  129. it and maintain it through the user's group.  This should not be construed as
  130. saying that this software is a "piece of junk"; instead, this software should
  131. be thought of much in the same fashion as any other package obtained via FTP
  132. -- one could even term it "caveat downloader".
  133.  
  134.  
  135. Included Software
  136. -----------------
  137. The software included in this package consists of the source code and
  138. linkable object modules for the kernel and the basic class library along
  139. with appropriate header files.
  140.  
  141. Kernel: listmgr.c, listmgr.obj, objlist.c, objlist.obj, genlist.c,
  142.     genlist.obj, garbage.c, garbage.obj, funcdisp.c, funcdisp.obj,
  143.     object.c, object.obj, class.c, class.obj, and gcstruct.h.
  144.  
  145. System: gcoope10.h, typing.h, generic.h, gcinit.h, gcinit.c, and gcinit.obj.
  146.  
  147. Classes: char.c, char.obj, shortint.c, shortint.obj, unsigned.c,
  148.      unsigned.obj, longint.c, longint.h, pointer.c, pointer.h,
  149.      dynmem.c, dynmem.obj, array.c, array.obj, collect.c, collect.obj,
  150.      lowstrm.c, lowstrm.obj, string.c, string.obj, stdstrm.c,
  151.      stdstrm.obj, stream.c, stream.h, and stream.obj.
  152.  
  153. Test: gentest.c, gentest.obj, gentest.prj, and gentest.exe.
  154.     NOTE: gentest is a simple hello world test program.
  155.  
  156.  
  157. Included Documentation
  158. ----------------------
  159. The source code and header files are documented with many notes and helpful
  160. hints, in addition the following document files are included:
  161.  
  162. *  USER10.TXT -- the user's guide to GCOOPE with OOP intro.
  163. *  KERN10.TXT -- the Technical Reference Manual to the GCOOPE kernel.
  164. *  GENERICS.TXT -- explanation of pre-defined generic functions.
  165. *  CLASSES.TXT -- explanation of pre-defined class definitions.
  166. *  LATEADDS.TXT -- late add-ons and notes.
  167.  
  168.  
  169. Technical Support
  170. -----------------
  171. The author will provide the following limited technical support on an as
  172. available basis:  consultation for ports of GCOOPE to new compilers/
  173. platforms, and bug fixes/reports.
  174.  
  175. Any further support will require a negotiation of consulting fees, however
  176. a higher degree of technical support will be provided for free to GCOOPE
  177. user's group members see appendices in KERN10.TXT or USER10.TXT for details.
  178.  
  179. The author can be contacted via the following channels:
  180.  
  181.     Voice: (814) 784 - 3614.
  182.  
  183.     Snail Mail:    PRICE TECHNOLOGIES
  184.             Brian Lee Price
  185.             RD2 BOX 239AA
  186.             CLEARVILLE, PA.  15535.
  187.  
  188.     E-Mail:       lee@hogbbs.scol.pa.us
  189.  
  190.     Home port bbs:    Magnetic Bottle 1-814-238-5559
  191.  
  192.             The Programmer's Corner 1-301-596-7692
  193.  
  194.     All inquiries are welcomed.
  195.  
  196.  
  197. Credits
  198. -------
  199. The GCOOPE package would not have been possible without the input from the
  200. first User's Group members of its ancestor package PCOOPE21, namely
  201. Norman Culver, and Mark Murphy.  Many thanks gentlemen.
  202.  
  203.     Also the form and some of the content of this document have been
  204. borrowed from the excellent documentation provided by Mark Murphy with
  205. his DLMEngine package.
  206.